<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>2-处理响应</title>
  <style>
    #box {
      width: 200px;
      height: 200px;
      border: 1px solid #666;
    }
  </style>
</head>

<body>
  <button id="textBtn">AJAX 获取Text</button>
  <button id="jsonBtn">AJAX 获取JSON</button>

  <div id="box"></div>
  <script>
    document.querySelector("#textBtn").onclick = () => {
      const xhr = new XMLHttpRequest();
      xhr.open("GET", 'http://localhost:8081/text-server');
      xhr.send();

      //4.绑定状态改变的监听
      xhr.onreadystatechange = () => {
        console.log('onreadystatechange readyState', xhr.readyState);
        //如果请求已经完成,才去取数据
        if (xhr.readyState == 4) {
          //打印响应状态码
          console.log(xhr.status);
          //打印响应头
          console.log(xhr.getResponseHeader('Content-Type'));
          //打印响应体
          console.log(xhr.responseText);

          //显示响应体
          document.getElementById('box').innerHTML = xhr.responseText;
        }
      }
    };


    document.querySelector('#jsonBtn').onclick = () => {
      const xhr = new XMLHttpRequest();
      xhr.open('GET', 'http://127.0.0.1:8081/json-server');
      xhr.send();

      //指定响应数据为JSON  => 告诉它帮我解析为js
      xhr.responseType = "json";

      //4.绑定状态改变的监听
      xhr.onreadystatechange = () => {
        //如果请求已经完成,才去取数据
        if (xhr.readyState === 4) {
          //打印响应状态码
          console.log(xhr.status);
          //打印响应头
          console.log(xhr.getResponseHeader('Content-Type'));
          // 响应体
          // console.log(xhr.responseText)
          // 将得到的json文本解析为js对象
          // const obj = JSON.parse(xhr.responseText)

          const obj = xhr.response // 内部会自动解析json  不需要手动解析

          /// 提示
          // alert(obj.code + '-' + obj.msg)
          // 如果请求成功([200, 299]), 显示响应数据
          if (xhr.status >= 200 && xhr.status <= 299) {
            // 显示响应体
            document.getElementById('box').innerHTML = JSON.stringify(obj)
          } else { // 如果失败了, 提示请求错误
            alert('请求失败, status=' + xhr.status)
          }
        }
      }
    }
  </script>
</body>

</html>